// 使用 monorepo 打包

import { execa, execaSync } from 'execa'
import fs from 'fs'
// const fs = require('fs')
// const execa = require('execa')

// 第一步：获取打包文件目录，并且药排除为目录的文件
const dirs = fs.readdirSync('packages').filter(dir => fs.statSync('packages').isDirectory())
// console.log(dirs);

// 第二步：进行打包 并行打包
const build = async (target) => {
    console.log(target, 111);
    // execa 是异步执行的，返回一个 promise
    // 使用 execa 进行打包 -c 表示要执行 rollup 的配置文件 environment 表示要执行的环境 TARGET 表示需要打包的目录
    // { stdio: 'inherit' } 子进程获取父层级的文件
    // TARGET:${target} 不要添加任何空格，否则会导致后面获取不到正确的路径
    await execa('rollup', ['-c', '--environment', `TARGET:${target}`], { stdio: 'inherit' })
}

const runParaller = async (dirs, itemfn) => {
    let result = []
    for (const dir of dirs) {
        result.push(itemfn(dir))   
    }
    return Promise.all(result)
}

runParaller(dirs, build).then(() => {
    console.log('打包成功')
})